package com.qf.controller;

import com.qf.entity.User;
import com.qf.util.R;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * --- 就那样---
 *
 * @author zzw
 * @date 向外响应json数据
 * @desc
 */

/**
 * 演示返回json数据（必须加respensebody）
 * 1）手写：“{\”code\":200,\"meg=成功\“}”
 */
@Controller  //@RestController使用这个就可以不用@ResponseBody了
public class Demo4Controller {
    @RequestMapping("/json1")
    @ResponseBody
    public String show1(){
        return "{\"code\":200,\"meg\"=成功}";
    }

    /**
     * 演示返回json数据（必须加respensebody）
     * 对象当json
     */
    @RequestMapping("/json2")
    @ResponseBody
    public User show2(){
        User user = new User();
        user.setId(1001);
        user.setUsername("章三");
        return user;
    }

    /**
     * 演示返回json数据（必须加respensebody）
     * map当json
     */
    @RequestMapping("/json3")
    @ResponseBody
    public Map show3(){
        HashMap<Object, Object> map = new HashMap<>();
        map.put("id",1001);
        map.put("name","张三");
        map.put("data",new User());
        return  map;
    }


    /**
     * 使用统一的R类返回json
     *
     */
    @RequestMapping("/json4")
    public R show4(){
        // R r = new R();
        // r.setCode(2000);
        // r.setData(new User());
        // r.setMessage("失败|成功");
        // return  r;

        //这种写法太麻烦，建议直接在R类中定义静态方法(详细见R类代码)，然后在此处使用方法调用
        // return R.success(); //({code:200,message:成功})

        //需要带数据的话再去R类里面重载一个方法(详细见R类代码)
        // return R.success(new User());


        //失败也需要一个方法(详细见R类代码) 写死的失败原因
        // return R.error();


        //而且失败的原因千奇百怪 需要自定义失败的key值(详细见R类代码)
        return R.error(4000,"失败");






    }
}